#include "Manager.h"
#include <algorithm>
#include "IniProgram.h"

void Manager::add(Container *other)
{
    if (other == nullptr)
        return;
    auto it = find(arr.begin(), arr.end(), other);
    if (it == arr.end())
    {
        arr.push_back(other);
        if (top == nullptr) // 如果还没有顶部容器，设置当前容器为顶部
        {
            top = other;
            touch.setRootContainer(top);
        }
    }
}

void Manager::set_top(Container *other)
{
    if (other == nullptr)
        return;
    auto it = find(arr.begin(), arr.end(), other);
    if (it == arr.end())
    {
        // 容器不存在，添加到管理器并置顶
        arr.push_back(other);
        top = other;
    }
    else
    {
        // 容器已存在，将其移到向量末尾（表示在最前面显示）
        top = other;
    }
    touch.setRootContainer(top);
}

Container *Manager::get_container(size_t index)
{
    if (index < arr.size())
    {
        return arr[index];
    }
    return nullptr;
}

void Manager::upadta_top()
{
    if (top == nullptr)
        return;
    top->update();
}